﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SushiWeb.Models;
using System.ServiceModel;

namespace SushiWeb.Controllers
{
    public class SeguridadController : Controller
    {

        public ActionResult Login()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Autenticar(Usuario usuario)
        {

            string mensaje = "";
            string tipoMensaje = "";
            Session["SessionDetallePedidos"] = null;
            try
            {
                SeguridadWS.SeguridadClient proxySeguridad = new SeguridadWS.SeguridadClient();
                SeguridadWS.Usuario usuarioWS = proxySeguridad.autenticarUsuario(usuario.Username, usuario.Contrasena);

                Usuario usuarioSesion = new Usuario();
                usuarioSesion.IdUsuario = usuarioWS.IdUsuario;
                usuarioSesion.IdPersona = usuarioWS.IdPersona;
                usuarioSesion.Username = usuarioWS.Username;
                usuarioSesion.Contrasena = usuarioWS.Contrasena;
                
                PersonaWS.PersonasClient proxyPersona = new PersonaWS.PersonasClient();
                PersonaWS.Persona clienteWS = proxyPersona.ObtenerPersona((int)usuarioWS.IdPersona);

                Cliente clienteSesion = new Cliente();
                clienteSesion.IdPersona = clienteWS.IdPersona;
                clienteSesion.Nombres = clienteWS.Nombres;
                clienteSesion.Apellidos = clienteWS.Apellidos;
                clienteSesion.TipoDocumento = clienteWS.TipoDocIden;
                clienteSesion.NumeroDocumento = clienteWS.NumDocIden;
                clienteSesion.Email = clienteWS.Email;
                clienteSesion.Direccion = clienteWS.Direccion;
                clienteSesion.Telefono = clienteWS.Telefono;
                clienteSesion.FecNacimiento = clienteWS.FecNacimiento;
                clienteSesion.TipoPersona = clienteWS.TipoPersona;

                Session["ClienteSesion"] = clienteSesion;
                if (clienteSesion.TipoPersona.Equals("ADMIN"))
                {
                    usuarioSesion.Nombre = "Administrador";
                    mensaje = "Bienvenido " + usuarioSesion.Nombre;
                }
                else 
                {
                    usuarioSesion.Nombre = clienteWS.Nombres + " " + clienteWS.Apellidos;
                    mensaje = "Bienvenido " + usuarioSesion.Nombre;
                }

                Session["UsuarioSesion"] = usuarioSesion;

                tipoMensaje = "INFO";
            }
            catch (FaultException<SeguridadWS.SeguridadException> ex)
            {
                mensaje = ex.Message;
                tipoMensaje = "WARN";
            }


            return (Json(new { mensaje = mensaje, tipoMensaje = tipoMensaje, redirectTo = Url.Action("Index", "Home") }, JsonRequestBehavior.DenyGet));       
        }

        public ActionResult Logout()
        {
            Session.Abandon();
            return Redirect("/Home/Index");
        }

    }
}